package com.suke.czx.common.validate;

import cn.hutool.core.util.StrUtil;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 应用模块名称: 自定义校验器
 * 代码描述: 自定义入参范围注解实现
 * copyright: AUZAR ALL RIGHTS RESERVED
 * company: AUZAR
 *
 * @author: 颜米晨
 * @date: 2021/09/03 17:16:44
 */
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {

    private String[] strValues;
    private int[] intValues;

    @Override
    public void initialize(EnumValue constraintAnnotation) {
        strValues = constraintAnnotation.strValues();
        intValues = constraintAnnotation.intValues();
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context ) {
        if (StrUtil.isBlankIfStr(value)) {
            return true;
        }
        if (value instanceof String) {
            for (String s : strValues) {
                if (s.equals(value)) {
                    return true;
                }
            }
        } else if (value instanceof Integer){
            for (Integer i : intValues) {
                if( i == value){
                    return true;
                }
            }
        }
        // 将错误信息绑定到verifyField上，否则错误信息是对应整个模型类的
        String messageTemplate = context.getDefaultConstraintMessageTemplate();
        context.buildConstraintViolationWithTemplate(messageTemplate);
        return false;
    }

}
